package com.gxc.webcore.util;

/**
 * 分层序号生成工具，每4位一个层级
 * 
 * @author gxc
 * 
 */
public class SequenceUtil {

	/**
	 * 生成初始序号
	 * 
	 * @return
	 */
	public static String generate() {
		return "0001";
	}

	/**
	 * 生成本层级的下一个序号
	 * 
	 * @param str
	 * @return
	 */
	public static String generate(String str) {
		if (str == null || str.length() % 4 != 0) {
			return "-1";
		}
		if (!isNumber(str)) {
			return "-1";
		}
		String substr = str.substring(str.length() - 4);
		Integer subint = Integer.valueOf(substr);
		subint++;
		if (subint > 9999) {
			return "-2";
		}
		substr = subint.toString();
		while (substr.length() < 4) {
			substr = "0" + substr;
		}
		return str.substring(0, str.length() - 4) + substr;
	}

	/**
	 * 判断str是否有数字组成
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isNumber(String str) {
		if (str == null) {
			return false;
		}
		for (int i = 0; i < str.length(); i++) {
			char c = str.charAt(i);
			if (c < '0' && c > '9') {
				return false;
			}
		}
		return true;
	}

}
